Single port and dual port RAM devices are known in the art. Dual port RAMs allow read and write operations to and from the RAM to occur independently, so that a read operation may be performed from one address at the same time that a write operation is performed to another address. Because these read and write operations occur independently, separate read and write clocks may be used. This makes the dual port RAM advantageous for use as a buffer between two systems operating at different frequencies. However, a dual port RAM has a larger memory cell size than that of a single port RAM.
A single port RAM is significantly smaller than a dual port RAM having the same capacity, but only one memory cell may be accessed at any given time, and only one operation may be performed at a time. Therefore, single port RAM has not been used as extensively as dual port RAM for applications that involve the buffering of data, and when they were used, designers commonly included large data buffers to hold read/write data.
When designers have tried to use a single port RAM for buffering data from multiple, concurrent data streams, the results have typically been suboptimal memory bandwidth allocations, poor scalability (when the number of concurrent sessions increases), and large intermediate buffering.